package 数组;

import java.util.Arrays;

/**
 * @author tmh
 * @date 2024/9/10 22:26
 * @description
 */
public class T56合并区间 {
    public int[][] merge(int[][] intervals) {
        //1.先把数组里面的每个子数组里面的下标从小到达排好
        Arrays.sort(intervals, (x, y) -> x[0] - y[0]);
        //2.获得数组的长度
        int len = intervals.length;
        //3.构造新数组
        int[][] merge = new int[len][2];
        //4.定义一个index
        int index = 0;
        merge[0] = intervals[0];
        //5.遍历原来的数组
        for (int i = 1; i < len; i++) {
            //大小判断
            if (merge[index][1] < intervals[i][0]) {
                merge[++index] = intervals[i];
            } else {
                //比较第一个数组和第二个数组的里面的第二个元素的大小当作新数组的右区间
                int max = Math.max(merge[index][1], intervals[i][1]);
                //这里就不对index额外加了
                merge[index][1] = max;
            }
        }
        return Arrays.copyOf(merge, index + 1);
    }
}
